//登录注册
const express = require('express');
const users = express.Router();
const bcrypt = require('bcryptjs');  //密码加密
const User = require("../models/User");
const jwt = require('jsonwebtoken');  //引入 touken 插件
process.env.SECRET_KEY = 'secret'; //放在环境变量里 

users.get ('/test',(req,res) => {
    res.send({
        msg:"test is works "
    })
})


//post 请求
users.post('/register',(req,res) => {
    console.log(req.body);
    const now = new Date();
    const userData = {
        name:req.body.name,
        email:req.body.email,
        password:req.body.password,
        created:now
    };
    //存之前，先找
    User.findOne({ where:{name:req.body.name}}).then((user)=> {
        //如果有
        if(!user){
            //加密
            bcrypt.hash(req.body.password,10,(err,hash) => {
                //加密成功
                userData.password = hash;
                User.create(userData).then((user) => {
                    //这一步判断有没有存成功
                    res.json({status: "注册成功"}) //成功存进去
                }).catch(err=>{
                    res.send("error:" + err)
                })
            })
        }else{
            //如果在数据库中存在
            res.json({error:"已存在"}) //存储失败

        }
    }).catch((err)=> {
        //如果查都没查进去
        res.send('error:'+ err )
    })
});


//登录
users.post('/login',(req,res) => {
    console.log(req.body); //得到数据
    //得到数据去表里查询
    User.findOne({
        where:{
            name:req.body.name
        }
    }).then(user=> {
        //查到用户
        if(user){
            //匹配密码
            if(bcrypt.compareSync(req.body.password,user.password)){  //判断加密密码
                // res.send('登录成功')
                //登录成功后返回token 
                //生成 token 
                let token = jwt.sign(user.dataValues,process.env.SECRET_KEY,{
                    //token过期时间
                    expiresIn:1440,
                });
                //返回给前端
                res.send(token);


            }else{
                res.send('密码错误')
            }
        }else{
            //查询的名字不存在
            res.status(400).json({
                error:"账号或者密码错误"
            })
        }
    }).catch(err => {
        res.status(400).json({
            error:"查找失败"
        })
    })
})
module.exports = users; 